-- 1.参数列表
-- 1.1 优惠券 id
local vouvherId = ARGV[1]
-- 1.2 用户 id
local userId = ARGV[2]

-- 2. 数据 key
-- 2.1 库存 key
local stockKey = 'seckill:stock:' .. vouvherId      -- 这个存的是一个字符串
-- 2.2 订单 key
local orderKey = 'seckill:order:' .. vouvherId      -- 这个存的是一个集合

-- 3.脚本业务
-- 3.1 判断库存是否充足
if (tonumber(redis.call('get', stockKey)) <= 0) then
    -- 库存不足 返回 1
    return 1
end

-- 3.2 判断用户是否下单
if (redis.call('sismember', orderKey, userId) == 1) then
    -- 3.2 存在 说明是重复下单 返回 2
    return 2
end

-- 3.4 扣库存 stockKey - 1
redis.call('incrby', stockKey, -1)
-- 3.5 下单 (保存用户) sadd orderKey userId
redis.call('sadd', orderKey, userId)
